package com.itheima.a09threadsafe1;

public class ThreadDemo {
    public static void main(String[] args) {
       /*
           需求：
                某电影院目前正在上映国产大片，共有100张票，而它有3个窗口卖票，请设计一个程序模拟该电影院卖票
            引出的安全问题：
            1.相同的票卖多次   --- 线程执行是有随机性
            2.出现了超出范围的票数  --- 线程执行是有随机性
            
            解决： 加锁
            使用同步代码块：把操作共享数据的代码锁起来
            synchronized(锁对象){
                操作共享数据的代码
            }
            特点：
            1.多个线程进入同一把锁，只有一个线程能进入，其他线程只能等待，直到锁被释放
            2.里面的代码全部执行完毕，线程出来，锁自动打开
            3.synchronized只能写在循环内
            4.锁对象---任意对象，只要唯一即可
       */


        //创建线程对象
        MyThread t1 = new MyThread();
        MyThread t2 = new MyThread();
        MyThread t3 = new MyThread();

        //起名字
        t1.setName("窗口1");
        t2.setName("窗口2");
        t3.setName("窗口3");

        //开启线程
        t1.start();
        t2.start();
        t3.start();



    }
}